perm filename SCHED[P,JRA]3 blob sn#570567 filedate 1981-03-09 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		EECS 129
C00004 00003		Part one: Functions as passive objects
C00010 00004		Part two: Functions as active objects
C00012 00005			  EECS 129: The Art of Computer Science
C00017 00006
C00023 ENDMK
CāŠ—;
	EECS 129

books:  zen and the art of motorcycle maintenance
	mindstorms
	godel, escher, bach
	lisp notes
	decline of the west

languages: mince, 
	   logo, 
	   lisp, 
	   c, 
	   visicalc, 
	   mu-math, 
	   zork, 
	   db lang.

week 1: start the "where" (we're going)
M overview; read  zen
T read mindstorms ch 1-2
TH discuss 1-2
F read ms 3

lab mince/emacs


week 2: start the "what" (is computation)
M  read ms 3
   start the computational ideas  
	use geb, and formal theory  ideas
T
TH ms 4
F
lab: logo
     visicalc (?)
     mu-math

week 3: start the "how" (it's done)
M   how graphics   ms 5-6   
T
TH  how lisp (computation) ms 7-*
F

lab: lisp


week 8: start the "wow"
    smalltalk: adele
    rubiks: trd
    phil: art chandler
    graphics/music: sek
    zork: bkd
    theory: vrp
    music: jc
    visicalc
    drh
    xerox people
    ai

    vlsi: ?
    nl: lewis?
    experts: ab
	Part one: Functions as passive objects
1  Notation
 	The role of notation in science
	 expressivity
	 subordination of detail
	 economy
	 amenability to proof
	The impact of computing on notation
	 executability
	 representability of algorithms
	The difficulties with programming languages

  Computation and interaction
	The relationship between language and its medium
	 why computing languages cannot be separated
	   from the programming env
	 cf. conversation and understanding
	The polarization between interaction and discipline
	 pascal vs. lisp  vs. ucsd pascal  vs smalltalk
	The polarization between rigor and hacking
	 basic vs. (lisp/scheme)


2  The language
3	Data domain: The whole numbers
	Algorithmic notation
	 conditional expressions
	 definitions
	   recursion
	 numerical examples
	computation as deduction
	   axioms for number theroy
	   rules of inference
	     substitution and simplification
		number theory
		conditional
	   the concept of proof
	    equivalence
	    termination
	Data Domain: symbolic expressions
	 the representability of programs
 	 abstract objects
	 constructors, selectors, and recognizers
	The mapping of expressions to data structures
	Non-numeric computation: examples
	  evaluation of polynomials
	  simplification of algebraic expressions
	  propositional logic: evaluation
	    ?theorem proving
	  binary trees (l-n-r) rep, sort, add, del
	  missionaries and cannibal
 	  game stuff

4  Evaluation
5	Deduction vs computation, again
	 systems for substitution and simplification
	 computation as controlled deduction
	 call-by-name vs. call-by-value
	Semantics of programming languages
	Representability of programs
	 a detailed discussion
	An evaluation algorithm
	 The operational view
	Implementation strategies
	 call-by-value
	 weak vs. strong conditional
	 simulation of substitution
	extending the evaluator
	 macros and read-macros: abbreviational convenience
	 iteration: language extension and special forms
	

6  A modern LISP: more data structuring
7	The idea of "first-class data"
	implementation-driven languages violate notational principles
	 arbitrary precision numbers
 	 Strings
	 Arrays
	 property-lists (flex records)

8  Property-lists and message passing
	classes as properties
	algorithms as message passing
	hieracharies and flavors
	  hierarchies as implementation simplification

9  Object-oriented programming
10	Smalltalk and Actors

11 Lexical vs dynamic scoping: the beginnings of active functions
	Evaluation revisited
	 functionals
	 the difficulty with functional arguments
	 variables: local, free, global
	 added complexity of functional values

12 Control: function vs algorithm
	an analysis of the evaluator
	 the run-time structure
	   stacks
	   stacks+access and control links
	   tree access, control stack
	   tree access, tree control

13 Applicative v.s. imperative
	control as a programming tool
	 side-effects
	  assignment, rplaca, rplacd

14 Implementation considerations
	implementation of the evaluation process
	 read
	  parsers and scanners
	   searching and hashing
	 print
	runtime language support
 	 i-j pairs
	 shallow versus deep
	run-time data support
	 numbers
	 arbitrary precision numbers
	 trees
	  programmer maintained
	  reference counting
	  garbage collection
	   mark sweep
	   copy-compacting
	    cheney
	    baker
	    henry&carl

15 Machines and compiling
16	The LISP machine
	Traditional machines as microcode
	Compilation
	 program representation
	  list structure
	  scheme hacks
	  p-code/byte code/MACRO
	  machine specific
	Hardware
	  LISP machine
	  Scheme chips

14 The Racks paper: a bridge  from passive to active
	Part two: Functions as active objects

1  Functions as first-class objects
  	Relationship between 
	  purity:lexical and
	  utility: dynamic
	interactive creation of functional objects
	 programming in "levels"

		
2  Applications of functional objects
     car,cdr, cons as:
	1. arrays and functional
	2. pure functional  (t, f)
	3. 1 as msg passing
3    stacks as functionals (gls/gjs)
4    multiprocessing (wand/aip)

5  Evaluation of Functionals
	evaluators for full funarg 
	evaluators for smalltalk (ingalls)

6  Applications of lisp-related computing
	cad
	nl
	business data bases  --must do much better here

7  The future of computing
	interactive programming
	language designs
	theory
	ai applications
		  EECS 129: The Art of Computer Science


This course  is  a  challenge. I  plan  to  challenge your  conception  of  what
computing is about, to challenge the traditional view of the purpose programming
languages, to challenge  the usual conception  of how one  does programming,  to
challenge the traditional curriculum of  computing, and in general to  challenge
your minds.

The  course  is  neither  mathematics  nor  engineering;  it  draws  from   both
disciplines, as does all  of computer science.  The intent of  the course is  to
investigate the phenomena called computing at  a level of abstraction that  will
allows us to explicate fundamental principles that underlie computing theory and
practice.

The texts for this course are "Zen  and the Art of Motorcycle Maintenance",  and
"Mindstorms: Computers, Children,  and Powerful Ideas".   Class notes will  form
the main structure  of the technical  and "meta-computational" perspective  that
supports the inquiry.  "Zen" has valuable insights in the relationships  between
art and science, besides the  appropriate "tone" for this course.   "Mindstorms"
is good fun:  an exemplary book showing how one can present complex ideas in  an
intuitive, yet faithful, setting.

A lab session  is associated with  this course.  Since  part of our  exploration
involves computing,  it  is  a  requirement that  one  understands  the  art  of
computing --often called "programming". Learning to program is like learning  to
drive --both  can  profit from  classroom  work that  explains  basic  concepts.
However both require "hands-on" experience before one really gets "the feel"  of
the instrument.  As with driving school, we should supply the students with  the
best available vehicles and guide them in the process of applying the theory.

There are two important practical lessons in the programming experience:   first
to develop an appreciation for abstraction and abstract programming, and  second
to develop  an understanding  of how  interactive programming  differs from  the
traditional   "batch"   (or   modified   "batch")-procesing   view.     Abstract
object-oriented  programming   carried  out   in  an   interactive   programming
environment is the future of applied computing.

The course will  be a  self-contained "mind-stretcher":   no prerequsites  other
than a  healthy  intellectual  curiousity  and  the  self-discipline  to  think.
However, the work will be demanding, so it is suggested that you have at least a
3.0 G.P.A.  in your major

WHAT I EXPECT:  A  lot! Though the course  will be self-contained, I  will
not "spoon-feed" you.  You will be expected to delve into areas other than
your major course of study:  mathematics, philosophy, education, art,  and
history are all fair game. Hopefully, there will be a sufficiently diverse
background in this class that knowledge can be pooled. If not, you (and I)
will have to dig.  If you have questions, understand where you lost track;
simply saying "I don't get it" is not satisfactory.

COURSE GRADING: Difficult! Some programming, some "fact extraction",  some
essays. Style and quality will count in all these efforts.

If you are one of those students who  feels that the only grade is an  "A"
and will drop if your GPA is threatened, then this course is not for  you.
For you "late dropper"s: be considerate  and drop early. Don't waste  your
time or hold a slot in this class that someone else might use.